
typedef struct fileSystemInfo
{
	char fileSystemLabel[50];	
	int maxFileDescriptors, usedFileDescriptors;
	int freeBlock, totalBlocks;
	int isUnmounted;
}fileSystemInfo;
int META_HEADER_START, FILE_DESCRIPTORS_START, FREE_LIST_START, BLOCKS_START;
fileSystemInfo fileSysInfo;

typedef struct fileDescriptor
{
	char fileName[20];
	char locationFullPath[100];
	char fileType[4];	//dir Means Directory...
	int block;		
	int fileSize;
}fileDescriptor;

typedef struct block
{
	char data[1024];
}block;

//NAry
typedef struct NAryTree
{
	fileDescriptor fd;
	struct NAryTree *parent;
	struct NAryTree *files;	
	struct NAryTree *directories;
	struct NAryTree *next;
	struct NAryTree *prev;
}NAryNode;
NAryNode *nAryRoot;

typedef struct HashTable
{
	char *fileName;
	NAryNode *nAryNode;
	struct HashTable* next;
	struct HashTable* prev; 
}HashTableNode;
HashTableNode *hashtable[26][26];

//Binary Search Tree
typedef struct BinarySearchTree
{
	char *fileName;
	struct BinarySearchTree *left;
	struct BinarySearchTree *right;
	NAryNode *nAryNode;
}BSTNode;
BSTNode *BSTRoot;

//Content Based Search
typedef struct Trie
{
	char ch;
	NAryNode *nAryNode;	
	struct Trie* children[26]; 
}Trie;
Trie *TrieRoot;

//Check Mounting
int isVFSMounted;
